package cn.gjxblog.scheduling.spring;

import cn.gjxblog.base.LogUtils;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Service;

import java.util.Random;

@Service
public class TaskService {

    /**
     * 每分钟的第0秒执行一次
     * 每小时的第0分钟开始每隔5分钟执行一次
     */
    @Scheduled(cron = "0 * * * * ?")
    @Scheduled(cron = "0 0/5 * * * ?")
    public void task1(){
        commonJob("1");
    }


    /**
     * 每分钟的第10秒执行一次
     */
    @Scheduled(cron = "10 * * * * ?")
    public void task2(){
        commonJob("2");
    }

    /**
     * 每分钟的第30秒开始每隔5秒执行一次
     */
    @Scheduled(cron = "30/5 * * * * ?")
    public void task3(){
        commonJob("3");
    }

    private void commonJob(String name) {
        long start = System.currentTimeMillis();
        System.out.println(LogUtils.getThreadInfo()+"作业"+name+"正在执行~~");
        try {
            Random random = new Random();
            Thread.sleep(1000*(random.nextInt(5)+1));
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
        long end = System.currentTimeMillis();

        System.out.println(LogUtils.getThreadInfo()+"作业"+name+"执行结束~~ 共执行"+(end-start)/1000+"秒");
    }
}
